package com.scrawler.util;





/**  
 * @Description: 描述
 * @author kuntang    
 * @version 1.0  
 * @created 2012-11-7 上午10:15:06 
 * Copyright (c) 2012 sohu,Inc. All Rights Reserved.
 */

public abstract class FilterStringUtils {

	/** 匹配摘要时间,|xxx讯xx(3月2日)*/
	private static String timeRule = ".*北京时间(\\d+年){0,1}\\d+月\\d+日(凌晨|上午|中午|下午|晚上){0,1},|.*月.*日,|.*讯.*\\(.*月.*日\\),|.*讯.{1,12},|.*.{1,2}月.{1,2}日讯";
	/** 匹配 xxx的消息报道*/
	private static String msgRule = ".*(消息|媒体|爆料|曝料|透露){1}(称|报道){0,1}(,|:|：){1}";
	/** 匹配全角半角的标点符号*/
	/** NBA常规赛继续进行*/
	private static String wordRule=".*NBA常规赛.*继续进行(,|。)|.*NBA常规赛.{0,10},";
	/** */
	private static String wordFilter = ".*报道,|(.*前方报道)|(.*调查),{0,1}|(.*搜狐.{2,4}讯)|(.*报讯)|(.*搜狐.*报道)|\\(记者.{2,3}\\)|记者.{2,3}(报道){0,1}";
	
	 private static final String symbolRule = "[\\pP‘’“”]";
	/** 前面的图片组图信息,链接信息,调查信息*/
	/** IMAGE_MARKER_0--&gt;&lt;!--IMAGE_MARKER_1--*/
	 private static final String PIC_GROUP = "(&lt;|br/|&gt;|strong|&amp;|lsquo;|&amp;|rsquo;|.*!--IMAGE_MARKER(_|-).{3}|.*VIDEO_MARKER(_|-).{3}){1}";
	/***/
	private static final String BLACK_SYMBOL="[\\s\\p{Zs}]";
	public static String getAbstractInfo(String content){
		String desc = cutCharByLength(content,240);
		//desc = desc.replaceAll(symbolRule, ",");
		desc = desc.replaceAll("，", ",");
		desc = filterAbstractTime(desc);
		System.out.println("time: "+desc);
		desc = filterAbstractMsg(desc);
		System.out.println("msg: "+desc);
		desc = filterPicGroup(desc);
		System.out.println("pic: "+desc);
		desc = cutCharByLength(desc,50);
		System.out.println("cutChar: "+desc);
		desc = desc.replaceAll(" |;", "");
		return desc.replaceAll(BLACK_SYMBOL, "");
	}
	
	private static String filterAbstractTime(String desc){
		if(desc == null ||desc.isEmpty()){
			return "";
		}
		desc = desc.replaceAll(timeRule, "");
		return desc;
	}
	
	private static String filterPicGroup(String desc){
		if(desc == null ||desc.isEmpty()){
			return "";
		}
		desc = desc.replaceAll("(（|）)", "");
		desc = desc.replaceAll(PIC_GROUP, "");
		desc = desc.replaceAll(wordRule, "");
		return desc.replaceAll(wordFilter, "");
	}
	
	private static String filterAbstractMsg(String desc){
		if(desc == null ||desc.isEmpty()){
			return "";
		}
		desc = desc.replaceAll(msgRule, "");
		return desc;
	}
	
	private static String cutCharByLength(String content,int length){
		if(content == null || content.isEmpty()){
			return "";
		}
		int end = content.length();
		if(content.length()>length){
			end = length;
		}
		return content.substring(0,end);
	}
	
	/**
	 * @Description:
	 * @Date: 2012-11-7
	 * @param: @param args
	 * @return: void
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// String content = "　　　　北京时间11月16日凌晨，据美媒体报道，休斯顿火箭队替补得分后卫卡洛斯-德尔菲诺并没有参加球队于美国当地时间周四进行的训练，主要原因是他在之前对阵黄蜂队的比赛当中有点轻微的大腿拉伤，他希望能够休养一天以摆脱伤病的困扰。&lt;br/&gt;　　　　德尔菲诺在昨天对阵黄蜂队的比赛当中全场5投0中'";
		// String content = "　　生活报1月7日讯 自称央视记者的两名男子敲诈某村村委会，村委会相关负责人付钱后报了案，2012年12月31日，哈市道里警方将两人在收钱现场抓获，两人现已被刑事拘留，案件正在进一步调查中。&lt;br/&gt;　　据介绍，2012年12月中旬，哈市道里区某村村民褚某不满足现有的拆迁补偿款，向村委会提出再加30万元的补偿要求。村委会答复褚某补偿款是按相关标准发放的，不能额外另发。褚某找到自称在媒体界门路颇广的“记者”张某为自己出谋划策，张某让他警告村委会负责人，如果不补偿到位，就找央视记者曝光此事。&lt;br/&gt;　　在张某的陪同和引荐下，褚某到北京约谈了自称央视记者的王某，张某和王某陪褚某约村委会负责人商讨此事。两名“记者”亮出“记者证”，称除了30万元补偿款，还要10万元的好处费。最终，双方同意由村委会支付褚某补偿款和“记者”好处费共30万元，“记者”不将此事曝光，并由村委会先行支付25万元。&lt;br/&gt;　　事后，村委会负责人越想越觉着蹊跷，便报了警。2012年12月31日，到了双方约定的交易日子，警方将正在收钱的褚某和两名“记者”堵在屋内，当场在张某、王某包内搜到十余本采访证件，证件上分别标注着“消费315”、“法制时空”、“环保监督”等电视台栏目的字样，侦查员还发现一本“黑龙江省人大立法调研员”的证件。经核实，张某、王某两人都无证件上标注的身份。两人现已被刑事拘留，案件正在进一步调查中。&lt;br/&gt;　　经查，两人还敲诈过其他人。目前，道里警方正在征集线索，请有类似被敲诈经历的人及时与警方联系。";
		String content = "据《休斯顿纪事报》报道,火箭队正式宣布裁掉新秀控卫斯科特-马查多。这也为火箭队后面签约帕特里克-贝弗　　" ;
		String desc = FilterStringUtils.getAbstractInfo(content);
		System.out.println(desc);	
		//String s = "&lt;!--$image=http://cache.k.sohu.com/img8/wb/fetch/2012/11/16/1982934142.jpg--&gt;    &amp;nbsp;    &lt;br/&gt;";
		System.out.println(content.length());
		
	}

}
